DML (Data Manipulation Language) Operations Salesforce ডেটাবেজে ডেটা যোগ, সংশোধন, মুছে ফেলা এবং রিকভারি করতে ব্যবহৃত হয়। DML অপারেশনস Apex কোডের মাধ্যমে রেকর্ড তৈরি, আপডেট, ডিলিট, ইনসার্ট, আপসার্ট এবং মার্জ করতে সহায়ক। Salesforce ডেটাবেজ ম্যানিপুলেশনে কার্যকরীভাবে DML অপারেশন ব্যবহার করা হয়।
Salesforce-এ প্রধানত ছয় ধরনের DML অপারেশন রয়েছে:
প্রতিটি DML অপারেশনের জন্য উদাহরণগুলো নিম্নরূপ:
INSERT অপারেশন ব্যবহার করে নতুন রেকর্ড ডেটাবেজে যোগ করা হয়।
উদাহরণ:
Account acc = new Account(Name = 'Acme Corporation');
insert acc;
এখানে একটি নতুন Account
রেকর্ড তৈরি করে insert
অপারেশনের মাধ্যমে ডেটাবেজে সেভ করা হয়েছে।
UPDATE অপারেশন ব্যবহার করে বিদ্যমান রেকর্ডের ডেটা পরিবর্তন করা হয়।
উদাহরণ:
Account acc = [SELECT Id, Name FROM Account WHERE Name = 'Acme Corporation' LIMIT 1];
acc.Name = 'Acme Inc.';
update acc;
এখানে Acme Corporation
নামে বিদ্যমান Account
রেকর্ডটির নাম পরিবর্তন করে Acme Inc.
করা হয়েছে এবং update
অপারেশনের মাধ্যমে সেভ করা হয়েছে।
DELETE অপারেশন বিদ্যমান রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়।
উদাহরণ:
Account acc = [SELECT Id FROM Account WHERE Name = 'Acme Inc.' LIMIT 1];
delete acc;
এখানে Acme Inc.
নামে Account
রেকর্ডটি ডিলিট করা হয়েছে।
UPSERT অপারেশন বিদ্যমান রেকর্ড আপডেট বা নতুন রেকর্ড ইনসার্ট করতে ব্যবহৃত হয়। এটি External Id
ফিল্ড ব্যবহার করে রেকর্ড শনাক্ত করে।
উদাহরণ:
Account acc = new Account(External_Id__c = 'A123', Name = 'Global Corp');
upsert acc External_Id__c;
এখানে External_Id__c
যদি A123
থাকে, তাহলে রেকর্ড আপডেট হবে; অন্যথায় নতুন রেকর্ড ইনসার্ট হবে।
MERGE অপারেশন ব্যবহার করে দুটি বা ততোধিক রেকর্ড একত্রে মিশিয়ে একটি রেকর্ড তৈরি করা যায়। সাধারণত এটি ডুপ্লিকেট রেকর্ড অপসারণের জন্য ব্যবহৃত হয়।
উদাহরণ:
Account masterAcc = [SELECT Id FROM Account WHERE Name = 'Main Account' LIMIT 1];
Account duplicateAcc = [SELECT Id FROM Account WHERE Name = 'Duplicate Account' LIMIT 1];
merge masterAcc duplicateAcc;
এখানে masterAcc
এবং duplicateAcc
রেকর্ড দুটি মার্জ করে একটি রেকর্ড তৈরি করা হয়েছে।
UNDELETE অপারেশন ব্যবহার করে ডিলিট হওয়া রেকর্ড পুনরুদ্ধার করা হয়। এটি শুধুমাত্র রিসাইকেল বিনে থাকা রেকর্ডের ক্ষেত্রেই প্রযোজ্য।
উদাহরণ:
List<Account> deletedAccounts = [SELECT Id FROM Account WHERE IsDeleted = true LIMIT 1 ALL ROWS];
undelete deletedAccounts;
এখানে IsDeleted = true
হওয়া রেকর্ডগুলো undelete
অপারেশন ব্যবহার করে পুনরুদ্ধার করা হয়েছে।
Bulk DML: একাধিক রেকর্ড প্রক্রিয়া করতে List
ব্যবহার করে Bulk DML অপারেশন চালানো উচিত। এটি গভর্নর লিমিট অতিক্রম না করতে সহায়ক।
উদাহরণ:
List<Account> accounts = new List<Account>{
new Account(Name = 'Account 1'),
new Account(Name = 'Account 2')
};
insert accounts;
Try-Catch Block ব্যবহার: DML অপারেশন চালানোর সময় ত্রুটি মোকাবেলার জন্য try-catch
ব্লক ব্যবহার করা উচিত।
উদাহরণ:
try {
insert accounts;
} catch (DmlException e) {
System.debug('DML Exception: ' + e.getMessage());
}
Partial DML (Database DML): Database.insert()
বা Database.update()
এর মতো DML মেথড ব্যবহার করে অপারেশনের আংশিক সফলতা নিশ্চিত করা যায়।
উদাহরণ:
Database.SaveResult[] results = Database.insert(accounts, false);
for (Database.SaveResult result : results) {
if (result.isSuccess()) {
System.debug('Record Inserted: ' + result.getId());
} else {
System.debug('Error: ' + result.getErrors()[0].getMessage());
}
}
Governor Limits বোঝা: Salesforce-এর গভর্নর লিমিট মেনে DML অপারেশন চালানো উচিত। অতিরিক্ত DML অপারেশন এড়িয়ে চলা এবং প্রয়োজন অনুযায়ী Bulk DML ব্যবহার করা উচিত।
Hardcoded Ids এড়িয়ে চলা: রেকর্ডের Id
হার্ডকোড না করে পরিবর্তনশীল ভ্যালু ব্যবহার করা উচিত।
এই DML অপারেশনগুলো Salesforce প্ল্যাটফর্মে ডেটা পরিচালনা ও ম্যানিপুলেশনে সহায়ক। DML অপারেশনস-এর Best Practices অনুসরণ করে কার্যকর এবং সিস্টেমের গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াজাত করা যায়।
DML (Data Manipulation Language) হলো Salesforce Apex ভাষায় ডেটা সংশোধন বা প্রক্রিয়াকরণের জন্য ব্যবহৃত একটি ভাষা, যা Salesforce ডেটাবেজে রেকর্ড তৈরি, আপডেট, ডিলিট, বা পুনরুদ্ধার করতে ব্যবহৃত হয়। DML অপারেশনগুলো ডেটাবেজের উপর ডিরেক্ট অ্যাক্সেস দিয়ে ডেটা পরিবর্তন এবং প্রক্রিয়াকরণে সহায়ক।
DML অপারেশন Apex কোডের মধ্যে ব্যবহার করে Salesforce এর ডেটা মডেলকে সম্পূর্ণরূপে নিয়ন্ত্রণ করা যায়। DML এর মাধ্যমে অ্যাপ্লিকেশন ডেটাবেজে নির্দিষ্ট ডেটা তৈরি বা পরিবর্তন করতে পারে, যা ব্যবহারকারীদের কার্যক্রম এবং ব্যবসায়িক নিয়ম অনুসারে তথ্য আপডেট করতে সহায়ক।
DML-এর প্রধান অপারেশনগুলো হলো:
Insert অপারেশনের মাধ্যমে নতুন রেকর্ড তৈরি করে ডেটাবেজে যোগ করা হয়।
Account newAccount = new Account(Name = 'Tech Solutions', Industry = 'Technology');
insert newAccount;
Account
অবজেক্টে একটি নতুন রেকর্ড তৈরি করে insert
কিওয়ার্ড দিয়ে সেটি ডেটাবেজে যোগ করা হয়েছে।Update অপারেশনের মাধ্যমে বিদ্যমান রেকর্ড আপডেট করা হয়।
Account existingAccount = [SELECT Id, Name FROM Account WHERE Name = 'Tech Solutions' LIMIT 1];
existingAccount.Industry = 'Software';
update existingAccount;
Account
রেকর্ডের Industry
ফিল্ড আপডেট করা হয়েছে এবং update
অপারেশন ব্যবহার করে সেটি ডেটাবেজে সেভ করা হয়েছে।Delete অপারেশনের মাধ্যমে বিদ্যমান রেকর্ড ডেটাবেজ থেকে মুছে ফেলা হয়।
Account deleteAccount = [SELECT Id FROM Account WHERE Name = 'Tech Solutions' LIMIT 1];
delete deleteAccount;
Account
রেকর্ড delete
অপারেশন ব্যবহার করে ডেটাবেজ থেকে মুছে ফেলা হয়েছে।Undelete অপারেশন ব্যবহার করে Recycle Bin-এ থাকা রেকর্ড পুনরুদ্ধার করা যায়।
Account restoreAccount = [SELECT Id FROM Account WHERE Name = 'Tech Solutions' LIMIT 1 ALL ROWS];
undelete restoreAccount;
Account
রেকর্ডকে undelete
অপারেশনের মাধ্যমে পুনরুদ্ধার করা হয়েছে।Upsert অপারেশন ব্যবহার করে রেকর্ড আপডেট বা যোগ করা যায়।
Account accountRecord = new Account(Name = 'Tech Solutions', Industry = 'Technology');
upsert accountRecord Name;
Name
মানের Account
রেকর্ড ডেটাবেজে বিদ্যমান থাকে তবে সেটি আপডেট হবে, অন্যথায় একটি নতুন রেকর্ড যোগ হবে।Merge অপারেশন দিয়ে একাধিক রেকর্ডকে একত্রিত করা যায়, বিশেষত ডুপ্লিকেট রেকর্ডের ক্ষেত্রে।
Account masterRecord = [SELECT Id FROM Account WHERE Name = 'Tech Solutions' LIMIT 1];
Account duplicateRecord1 = [SELECT Id FROM Account WHERE Name = 'Tech Solutions Duplicate 1' LIMIT 1];
Account duplicateRecord2 = [SELECT Id FROM Account WHERE Name = 'Tech Solutions Duplicate 2' LIMIT 1];
merge masterRecord duplicateRecord1 duplicateRecord2;
Tech Solutions
নামে প্রধান Account
রেকর্ডে দুইটি ডুপ্লিকেট রেকর্ড মার্জ করা হয়েছে।Merge
অপারেশন ব্যবহার করে ডুপ্লিকেট রেকর্ডগুলো একত্রিত করে ডেটার মান নিয়ন্ত্রণ করা যায়।বৈশিষ্ট্য | DML | SOQL |
---|---|---|
মূল উদ্দেশ্য | ডেটা সংশোধন এবং ম্যানিপুলেশন | ডেটা অনুসন্ধান এবং পুনরুদ্ধার |
অপারেশন | Insert, Update, Delete, Upsert, Merge, Undelete | SELECT |
ডেটা পরিবর্তন | ডেটা তৈরি, আপডেট, ডিলিট করতে ব্যবহৃত | ডেটা খুঁজে বের করতে ব্যবহৃত |
ব্যবহার ক্ষেত্র | ডেটাবেজে নতুন ডেটা যোগ করা বা পরিবর্তন | ডেটাবেজ থেকে ডেটা সংগ্রহ করা |
DmlException
তৈরি হয়। try-catch
ব্লক ব্যবহার করে DML অপারেশনের ত্রুটি হ্যান্ডল করা উচিত।DML অপারেশন Salesforce-এর ডেটাবেজে ডেটা সংশোধন এবং ম্যানিপুলেশনের একটি গুরুত্বপূর্ণ টুল, যা Apex কোডে ডেটা প্রক্রিয়াকরণকে সহজ করে তোলে। Insert, Update, Delete, Undelete, Upsert, এবং Merge অপারেশনগুলো ডেটা সংশোধন, ডুপ্লিকেট অপসারণ, এবং ডেটা পুনরুদ্ধারে কার্যকরভাবে ব্যবহৃত হয়। DML অপারেশনগুলোর মাধ্যমে Salesforce ডেটাবেজের ডেটা সহজে এবং দ্রুত ম্যানেজ করা সম্ভব।
Insert, Update, Delete, Undelete, এবং Merge অপারেশন Salesforce প্ল্যাটফর্মে ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত গুরুত্বপূর্ণ DML অপারেশন। প্রতিটি অপারেশন নির্দিষ্ট উদ্দেশ্য পূরণের জন্য ব্যবহার করা হয়, যেমন ডেটা যোগ, সংশোধন, মুছে ফেলা, পুনরুদ্ধার এবং একত্রিত করা।
Insert অপারেশন ব্যবহার করে Salesforce ডেটাবেজে নতুন রেকর্ড যোগ করা হয়। এই অপারেশনটি সাধারণত insert
কিওয়ার্ড ব্যবহার করে চালানো হয়।
উদাহরণ:
Account acc = new Account(Name = 'Acme Corporation');
insert acc;
এখানে Acme Corporation
নামে একটি নতুন Account
রেকর্ড তৈরি করে ডেটাবেজে সেভ করা হয়েছে।
একাধিক রেকর্ড একসাথে Insert করতে List
ব্যবহার করে Bulk Insert চালানো যায়।
উদাহরণ:
List<Account> accounts = new List<Account>{
new Account(Name = 'Account 1'),
new Account(Name = 'Account 2')
};
insert accounts;
Update অপারেশন ব্যবহার করে বিদ্যমান রেকর্ডের তথ্য পরিবর্তন করা হয়। এটি update
কিওয়ার্ড ব্যবহার করে চালানো হয়।
উদাহরণ:
Account acc = [SELECT Id, Name FROM Account WHERE Name = 'Acme Corporation' LIMIT 1];
acc.Name = 'Acme Inc.';
update acc;
এখানে Acme Corporation
নামে Account
রেকর্ডটির নাম পরিবর্তন করে Acme Inc.
করা হয়েছে।
একাধিক রেকর্ড একসাথে Update করতে List
ব্যবহার করে Bulk Update চালানো যায়।
উদাহরণ:
List<Account> accounts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
for (Account acc : accounts) {
acc.Industry = 'Information Technology';
}
update accounts;
Delete অপারেশন ব্যবহার করে বিদ্যমান রেকর্ড ডেটাবেজ থেকে মুছে ফেলা হয়। এটি delete
কিওয়ার্ড ব্যবহার করে চালানো হয়।
উদাহরণ:
Account acc = [SELECT Id FROM Account WHERE Name = 'Acme Inc.' LIMIT 1];
delete acc;
এখানে Acme Inc.
নামে Account
রেকর্ডটি ডিলিট করা হয়েছে।
একাধিক রেকর্ড একসাথে Delete করতে List
ব্যবহার করে Bulk Delete চালানো যায়।
উদাহরণ:
List<Account> accounts = [SELECT Id FROM Account WHERE Industry = 'Obsolete'];
delete accounts;
Undelete অপারেশন ব্যবহার করে পূর্বে ডিলিট করা রেকর্ড পুনরুদ্ধার করা হয়। এটি undelete
কিওয়ার্ড ব্যবহার করে চালানো হয় এবং শুধুমাত্র রিসাইকেল বিনে থাকা রেকর্ডগুলোর ক্ষেত্রেই প্রযোজ্য।
উদাহরণ:
List<Account> deletedAccounts = [SELECT Id FROM Account WHERE IsDeleted = true LIMIT 1 ALL ROWS];
undelete deletedAccounts;
এখানে IsDeleted = true
হওয়া রেকর্ডগুলো undelete
অপারেশন ব্যবহার করে পুনরুদ্ধার করা হয়েছে।
Merge অপারেশন ব্যবহার করে দুটি বা ততোধিক রেকর্ড একত্রিত করে একটি রেকর্ড তৈরি করা যায়। সাধারণত এটি ডুপ্লিকেট রেকর্ড অপসারণের জন্য ব্যবহৃত হয়। merge
অপারেশনে একটি master
রেকর্ড এবং এক বা একাধিক duplicate
রেকর্ড উল্লেখ করা হয়।
উদাহরণ:
Account masterAcc = [SELECT Id FROM Account WHERE Name = 'Primary Account' LIMIT 1];
Account duplicateAcc = [SELECT Id FROM Account WHERE Name = 'Duplicate Account' LIMIT 1];
merge masterAcc duplicateAcc;
এখানে Primary Account
এবং Duplicate Account
রেকর্ড দুটি মার্জ করে একটি একক রেকর্ড তৈরি করা হয়েছে।
Bulk DML Operations: একাধিক রেকর্ড প্রক্রিয়া করার সময় List
ব্যবহার করে Bulk DML অপারেশন চালানো উচিত, যা গভর্নর লিমিটের মধ্যে থেকে কাজ করতে সহায়ক।
Try-Catch Block ব্যবহার: DML অপারেশন চালানোর সময় ত্রুটি মোকাবেলা করতে try-catch
ব্লক ব্যবহার করা উচিত, যা DML Exception হ্যান্ডেল করতে সহায়ক।
উদাহরণ:
try {
insert accounts;
} catch (DmlException e) {
System.debug('DML Exception: ' + e.getMessage());
}
Partial DML (Database DML): Database.insert()
বা Database.update()
এর মতো DML মেথড ব্যবহার করে অপারেশনের আংশিক সফলতা নিশ্চিত করা যায়।
উদাহরণ:
Database.SaveResult[] results = Database.insert(accounts, false);
for (Database.SaveResult result : results) {
if (result.isSuccess()) {
System.debug('Record Inserted: ' + result.getId());
} else {
System.debug('Error: ' + result.getErrors()[0].getMessage());
}
}
Avoid Hardcoded IDs: হার্ডকোড করা Id
ব্যবহার এড়ানো উচিত এবং পরিবর্তনশীল ভ্যালু ব্যবহার করা উচিত, যা কোড রিইউজেবল করে।
Governor Limits বোঝা: Salesforce গভর্নর লিমিট মেনে DML অপারেশন চালানো উচিত এবং অতিরিক্ত DML অপারেশন এড়ানো উচিত।
অপারেশন | উদ্দেশ্য |
---|---|
INSERT | নতুন রেকর্ড ডেটাবেজে যোগ করা |
UPDATE | বিদ্যমান রেকর্ডের ডেটা পরিবর্তন করা |
DELETE | বিদ্যমান রেকর্ড ডেটাবেজ থেকে মুছে ফেলা |
UNDELETE | ডিলিট হওয়া রেকর্ড পুনরুদ্ধার করা |
MERGE | দুটি বা ততোধিক রেকর্ড একত্রিত করে একটি রেকর্ড তৈরি করা |
Salesforce প্ল্যাটফর্মে DML অপারেশনস ব্যবহার করে ডেটা সংযোজন, সংশোধন, মুছে ফেলা এবং একত্রিত করার প্রক্রিয়া সহজে সম্পন্ন করা যায়। DML অপারেশনস-এর Best Practices অনুসরণ করে কার্যকরী ও গভর্নর লিমিটের মধ্যে থেকে ডেটা পরিচালনা করা সম্ভব।
Database Methods এবং Bulk DML Operations Salesforce-এ ডেটা ম্যানিপুলেশন এবং ডেটাবেজে রেকর্ড ইনসার্ট, আপডেট, বা ডিলিট করার জন্য ব্যবহৃত হয়। এগুলো Salesforce-এর গভর্নর লিমিট মেনে একাধিক রেকর্ডে কার্যকরী ডেটা প্রক্রিয়াকরণে সহায়ক।
Salesforce-এ ডেটা সংশোধন বা ম্যানিপুলেশনের জন্য DML স্টেটমেন্ট যেমন insert
, update
, delete
ইত্যাদি ব্যবহার করা যায়। তবে, এই DML স্টেটমেন্টগুলো Bulk DML বা বড় ডেটা সেট নিয়ে কাজ করার সময় Salesforce এর গভর্নর লিমিট-এর মধ্যে কার্যকরী না হতে পারে। Database Methods এই সমস্যা সমাধানে সহায়ক এবং Bulk DML অপারেশনে আরও কার্যকর।
Database Methods Apex Database
ক্লাসের মাধ্যমে সরবরাহ করা হয়, এবং এগুলোতে allOrNone
প্যারামিটার থাকে, যা বলে দেয় পুরো অপারেশনটি একবারে সফল হবে কিনা বা আংশিকভাবে সম্পন্ন হবে। এই প্যারামিটার false
সেট করলে ত্রুটি ঘটলেও কাজটি আংশিকভাবে সম্পন্ন হতে পারে, যা বড় ডেটা সেট বা Bulk DML অপারেশনের জন্য কার্যকর।
List<Account> accounts = new List<Account>{
new Account(Name = 'Tech Solutions'),
new Account(Name = 'ABC Corporation'),
new Account(Name = 'XYZ Industries')
};
// Database.insert() ব্যবহার করে DML অপারেশন, allOrNone = false
Database.SaveResult[] results = Database.insert(accounts, false);
for (Database.SaveResult result : results) {
if (result.isSuccess()) {
System.debug('Record inserted successfully: ' + result.getId());
} else {
System.debug('Error inserting record: ' + result.getErrors()[0].getMessage());
}
}
Database.insert
মেথডে allOrNone = false
সেট করা হয়েছে, যার ফলে কোনো রেকর্ড ব্যর্থ হলেও অন্যান্য রেকর্ড সেভ হবে।SaveResult[]
অর্রে ব্যবহার করে সফল বা ব্যর্থ অপারেশন ট্র্যাক করা হয়েছে।Bulk DML Operations মূলত একাধিক রেকর্ড নিয়ে কার্যকরী ডেটা প্রক্রিয়াকরণে ব্যবহৃত হয়। Salesforce এর গভর্নর লিমিটের কারণে প্রতিটি DML অপারেশন চালনার সময় সর্বাধিক ১০,০০০ রেকর্ড আপডেট বা ইন্সার্ট করা সম্ভব। Bulk DML অপারেশন Salesforce-এ ডেটা প্রক্রিয়াকরণের পারফরম্যান্স বাড়ায় এবং গভর্নর লিমিট বজায় রাখতে সহায়ক।
Bulk DML অপারেশনগুলোতে একাধিক রেকর্ডকে একত্রে প্রক্রিয়া করার জন্য তালিকা (List) ব্যবহার করা হয়।
List<Account> accountList = new List<Account>();
for (Integer i = 1; i <= 1000; i++) {
accountList.add(new Account(Name = 'Account ' + i));
}
// Bulk Insert অপারেশন
insert accountList;
Account
রেকর্ড accountList
-এ যুক্ত করা হয়েছে এবং একত্রে insert
DML অপারেশন চালানো হয়েছে।Bulk DML অপারেশন চালানোর সময় Salesforce গভর্নর লিমিটের সীমার মধ্যে থেকে কার্যকরী ডেটা প্রসেসিং করা সম্ভব হয়।
allOrNone
false
দিলে আংশিক সফল হতে পারে।allOrNone
false
দিলে ত্রুটি সহ্য করে আংশিকভাবে সম্পন্ন হবে।allOrNone
false
সেট করলে আংশিকভাবে কাজ করে।externalId
মিলে যায় তবে আপডেট করে, অন্যথায় নতুন রেকর্ড ইনসার্ট করে।allOrNone
প্যারামিটার ব্যবহার করে আংশিক সফল অপারেশন নিশ্চিত করে, যার ফলে কোনো রেকর্ড ব্যর্থ হলেও অন্য রেকর্ডগুলো সফলভাবে প্রসেস করা যায়।SaveResult
এবং DeleteResult
প্রদান করে।নিচের উদাহরণে একটি তালিকায় ৫০০টি Contact
রেকর্ড যোগ করে Database.insert()
ব্যবহার করা হয়েছে এবং allOrNone = false
সেট করা হয়েছে।
List<Contact> contactList = new List<Contact>();
for (Integer i = 1; i <= 500; i++) {
contactList.add(new Contact(FirstName = 'First' + i, LastName = 'Last' + i));
}
// Database.insert ব্যবহার করে Bulk DML অপারেশন
Database.SaveResult[] results = Database.insert(contactList, false);
for (Database.SaveResult result : results) {
if (result.isSuccess()) {
System.debug('Contact Inserted Successfully: ' + result.getId());
} else {
System.debug('Error inserting Contact: ' + result.getErrors()[0].getMessage());
}
}
allOrNone
false
সেট করার কারণে ত্রুটি সহ্য করে অবশিষ্ট রেকর্ডগুলো সেভ হবে।allOrNone
প্যারামিটার ব্যবহার করে।এইভাবে, Database Methods এবং Bulk DML Operations Salesforce প্ল্যাটফর্মে কার্যকরী ডেটা ম্যানিপুলেশনে গুরুত্বপূর্ণ ভূমিকা পালন করে এবং বড় ডেটাসেট নিয়ে কাজ করার সময় কোড পারফরম্যান্স ও কার্যকারিতা বাড়ায়।
DML Exception Handling এবং Error Management হলো Apex কোডে ডেটা ম্যানিপুলেশন অপারেশনে (যেমন Insert, Update, Delete) কোনো ত্রুটি হলে তা সঠিকভাবে শনাক্ত এবং হ্যান্ডেল করার প্রক্রিয়া। Salesforce ডেটাবেজে DML অপারেশন চালানোর সময় যদি কোনো সমস্যা বা ত্রুটি ঘটে, তাহলে DML Exception তৈরি হয়। Exception Handling এর মাধ্যমে কোডে ত্রুটি সনাক্ত করে সঠিক পদক্ষেপ গ্রহণ করা যায়, যা অ্যাপ্লিকেশনের স্থায়িত্ব এবং পারফরম্যান্স উন্নত করে।
DML অপারেশন চলাকালীন কোনো ত্রুটি ঘটলে Salesforce DmlException তৈরি করে। DML Exception হ্যান্ডল করার জন্য try-catch ব্লক ব্যবহার করা হয়। catch
ব্লকের মাধ্যমে ত্রুটি সনাক্ত করে প্রয়োজনীয় পদক্ষেপ নেয়া যায়।
Account newAccount = new Account(Name = 'Test Account');
try {
// DML অপারেশন, যদি কোনো ত্রুটি ঘটে তবে Exception তৈরি হবে
insert newAccount;
System.debug('Account inserted successfully');
} catch (DmlException e) {
System.debug('Error occurred: ' + e.getMessage());
}
try
ব্লকে insert
DML অপারেশনটি সম্পন্ন করা হয়েছে এবং catch
ব্লকে DmlException হ্যান্ডল করা হয়েছে।catch
ব্লকে থাকা কোড এক্সিকিউট হবে এবং getMessage() মেথড ত্রুটির বার্তা প্রদর্শন করবে।বড় ডেটাসেট বা Bulk DML অপারেশনের সময় যখন অনেকগুলো রেকর্ডে অপারেশন চালানো হয়, তখন কিছু রেকর্ড সফল হতে পারে এবং কিছু ত্রুটির কারণে ব্যর্থ হতে পারে। Bulk DML Exception Handling করার জন্য Database.insert(), Database.update() এর মতো Database Methods ব্যবহার করা হয়। Database Methods-এ allOrNone
প্যারামিটার false
সেট করা হলে, ত্রুটি ঘটলেও অবশিষ্ট রেকর্ড সফলভাবে প্রক্রিয়া করা হয়।
List<Account> accountList = new List<Account>{
new Account(Name = 'Account 1'),
new Account(Name = ''), // Empty name, will cause an error
new Account(Name = 'Account 3')
};
// Database.insert() ব্যবহার করে Bulk DML অপারেশন
Database.SaveResult[] results = Database.insert(accountList, false);
for (Database.SaveResult result : results) {
if (result.isSuccess()) {
System.debug('Account Inserted Successfully: ' + result.getId());
} else {
System.debug('Error inserting Account: ' + result.getErrors()[0].getMessage());
}
}
Database.insert(accountList, false)
ব্যবহার করা হয়েছে, যেখানে allOrNone
false
সেট করা হয়েছে। ত্রুটি ঘটলেও অবশিষ্ট রেকর্ড সেভ হবে।Exception Handling এর সময় কয়েকটি গুরুত্বপূর্ণ প্রোপার্টি রয়েছে, যা Exception সম্পর্কে বিস্তারিত তথ্য প্রদান করে:
try {
Account newAccount = new Account(Name = '');
insert newAccount;
} catch (DmlException e) {
System.debug('Error: ' + e.getMessage());
System.debug('Affected Fields: ' + e.getDmlFields(0));
System.debug('DML Record ID: ' + e.getDmlId(0));
}
DML অপারেশনের সময় ত্রুটি হ্যান্ডল করার জন্য কিছু গুরুত্বপূর্ণ Error Management স্ট্র্যাটেজি নিচে উল্লেখ করা হলো:
Partial Success Handling: বড় ডেটাসেটের ক্ষেত্রে allOrNone
প্যারামিটার false
করে আংশিক সফলতা নিশ্চিত করা যায়। এতে কিছু রেকর্ড ব্যর্থ হলেও অবশিষ্ট রেকর্ড সফলভাবে প্রক্রিয়া হবে।
Error Logging: ত্রুটির লোগ রাখা একটি ভালো স্ট্র্যাটেজি, যাতে পরবর্তীতে তা বিশ্লেষণ করা যায়। ত্রুটি লোগ করে সঠিক সমাধান খুঁজে বের করা সহজ হয়।
User Notification: ত্রুটি হলে ব্যবহারকারীকে তাৎক্ষণিকভাবে অবহিত করা প্রয়োজন। কাস্টম ত্রুটি বার্তা ব্যবহারকারীদেরকে সঠিক তথ্য প্রদান করে।
Retry Mechanism: কিছু ক্ষেত্রে ত্রুটি ঘটলে DML অপারেশন পুনরায় চালনা করার প্রয়োজন হতে পারে। এমন অবস্থায় Retry Mechanism ব্যবহার করা যেতে পারে।
Custom Validation Messages: যখন কোনো ডেটা ভুল ইনপুট হয়, তখন কাস্টম ভ্যালিডেশন বার্তা ব্যবহারকারীদেরকে সমস্যার সঠিক কারণ বুঝতে সাহায্য করে।
try-catch
ব্লক ব্যবহার করে।Database.insert()
এবং Database.update()
ব্যবহার করে আংশিক সফলতা অর্জন করা যায়।DML Exception Handling এবং সঠিক Error Management স্ট্র্যাটেজি প্রয়োগ করে Salesforce Apex কোডে ডেটা ম্যানিপুলেশন কার্যক্রম আরও নির্ভরযোগ্য ও কার্যকরী করা যায়।
common.read_more